package com.mybatisplus;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

//自动生成
public class AutoMapper {
    public static void main(String[] args) {
        //创建AutoGenerator mp中对象
        AutoGenerator ag = new AutoGenerator();
        //设置全局配置
        GlobalConfig gc = new GlobalConfig();
        //设置代码生成位置  工程目录
        String path = System.getProperty("user.dir");
        gc.setOutputDir(path + "/src/main/java");
        //设置生成的类的名称（命名规则）
        gc.setMapperName("%sMapper");//所有的dao类名称都以mapper结尾
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setControllerName("%sController");
        //设置作者
        gc.setAuthor("liutao");
        //设置主键id配置
        gc.setIdType(IdType.ASSIGN_ID);
        ag.setGlobalConfig(gc);
        //设置数据源
        DataSourceConfig ds = new DataSourceConfig();
        //驱动
        ds.setDriverName("com.mysql.cj.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC");
        ds.setUsername("root");
        ds.setPassword("root");
        //把datasourceconfig复制给AutoGenerator
        ag.setDataSource(ds);
        //设置package信息
        PackageConfig pc = new PackageConfig();
        //设置包名 包下有mapper service controller
        pc.setModuleName("order");
        //设置父包名称，order就在父包下面生成
        pc.setParent("com.mybatisplus");
        ag.setPackageInfo(pc);
        //设置策略
        StrategyConfig sc = new StrategyConfig();
        //设置支持驼峰命名规则 (表的)
        sc.setNaming(NamingStrategy.underline_to_camel);
        //设置支持驼峰命名规则 （列的）
        sc.setColumnNaming(NamingStrategy.underline_to_camel);
        ag.setStrategy(sc);
        //执行代码生成
        ag.execute();
    }
}
